from openai import OpenAI
import os

def AI_DeepSeek(user_input):
    # 初始化 OpenAI 客户端
    client = OpenAI(
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
    )

    # 定义完整思考过程和完整回复
    reasoning_content = ""
    answer_content = ""
    is_answering = False

    # 用户身份和前期提示词
    system_message = {
        "role": "system",
        "content": "- Role: 数据分析总结专家\n"
                   "- Background: 我已完成新闻数据的分析工作，包括分词、情感分析、主题建模等步骤，并使用了 jieba、SnowNLP、collections、gensim、matplotlib、wordcloud 等工具。"
                   "现在需要对这些分析的结论数据进行总结，以及结合当今时代局势得出你的分析结论。\n"
                   "提供的新闻数据分析结论数据，提取关键信息，以简洁的语言进行总结，确保总结内容贴合数据\n"
                   "总结必须使用中文，简洁明了，准确反映数据分析的核心结论。\n"
                   "只有发挥，你根据以上的数据，说明了现在局势反映了什么问题"
                   "- Output Format: 表述总结。"
    }

    try:
        # 创建聊天完成请求
        completion = client.chat.completions.create(
            model="deepseek-v3",  # 使用指定的模型
            messages=[
                system_message,  # 添加系统消息，定义用户身份
                {"role": "user", "content": user_input}  # 用户输入的提示词
            ],
            stream=True
        )

        # print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")

        for chunk in completion:
            # 如果 chunk.choices 为空，则打印 usage
            if not chunk.choices:
                print("\nUsage:")
                print(chunk.usage)
            else:
                delta = chunk.choices[0].delta
                # 打印思考过程
                if hasattr(delta, 'reasoning_content') and delta.reasoning_content is not None:
                    print(delta.reasoning_content, end='', flush=True)
                    reasoning_content += delta.reasoning_content
                else:
                    # 开始回复
                    if delta.content != "" and not is_answering:
                        print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
                        is_answering = True
                    # 打印回复过程
                    print(delta.content, end='', flush=True)
                    answer_content += delta.content

    except Exception as e:
        print("\n" + "=" * 20 + "错误信息" + "=" * 20 + "\n")
        print(f"发生错误：{e}")
        print("\n" + "=" * 20 + "错误信息" + "=" * 20 + "\n")
        print("由于网络原因或链接问题，无法成功解析网页。请检查网页链接的合法性，并适当重试。")
        print("如果不需要该链接的解析，也可以尝试其他功能。")

user_input = """
{
    "total_titles": 192,
    "total_words": 1342,
    "avg_sentiment": 0.613157355267512,
    "sentiment_distribution": {
        "positive": 116,
        "neutral": 16,
        "negative": 60
    },
    "top_words": {
        "中国": 17,
        "男子": 9,
        "特朗普": 8,
        "当地": 7,
        "印度": 7,
        "美国": 7,
        "兵马俑": 7,
        "日本": 5,
        "死亡": 5,
        "通报": 5,
        "云南": 4,
        "广东": 4,
        "关税": 4,
        "韩国": 4,
        "中方": 4,
        "期间": 4,
        "汽车": 4,
        "广西": 4,
        "修复": 4,
        "事件": 4
    },
    "topics": [
        "0.029*\\\"浙江\\\" + 0.029*\\\"中方\\\" + 0.020*\\\"博主\\\" + 0.020*\\\"发声\\\" + 0.020*\\\"被捕\\\"",
        "0.055*\\\"男子\\\" + 0.043*\\\"兵马俑\\\" + 0.025*\\\"韩国\\\" + 0.025*\\\"修复\\\" + 0.019*\\\"进驻\\\"",
        "0.034*\\\"日本\\\" + 0.028*\\\"广东\\\" + 0.022*\\\"死亡\\\" + 0.022*\\\"香港\\\" + 0.021*\\\"地震\\\"",
        "0.107*\\\"中国\\\" + 0.045*\\\"印度\\\" + 0.044*\\\"特朗普\\\" + 0.032*\\\"美国\\\" + 0.020*\\\"留学生\\\"",
        "0.030*\\\"通报\\\" + 0.023*\\\"登顶\\\" + 0.023*\\\"国防大学\\\" + 0.023*\\\"代表团\\\" + 0.023*\\\"山东\\\""
    ]
}
"""

AI_DeepSeek(user_input)